package com.henry.bean;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.WordUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by 峥桂 on 2017/5/26.
 */
public class ClassNameUtils {
    public static Map<String, String> dataTypeConvertMap = new HashMap<>();

    static {
        dataTypeConvertMap.put("tinyint", "Integer");
        dataTypeConvertMap.put("smallint", "Integer");
        dataTypeConvertMap.put("int", "Integer");
        dataTypeConvertMap.put("mediumint", "Integer");
        dataTypeConvertMap.put("integer", "Integer");
        dataTypeConvertMap.put("bigint", "Long");
        dataTypeConvertMap.put("float", "Float");
        dataTypeConvertMap.put("double", "Double");
        dataTypeConvertMap.put("decimal", "BigDecimal");
        dataTypeConvertMap.put("char", "String");
        dataTypeConvertMap.put("varchar", "String");
        dataTypeConvertMap.put("tinytext", "String");
        dataTypeConvertMap.put("text", "String");
        dataTypeConvertMap.put("mediumtext", "String");
        dataTypeConvertMap.put("longtext", "String");
        dataTypeConvertMap.put("date", "Date");
        dataTypeConvertMap.put("datetime", "Date");
        dataTypeConvertMap.put("timestamp", "Date");
    }

    public static int getColunmLength(String columnTypeStr){
        try {
            String length= columnTypeStr.substring(columnTypeStr.indexOf("(")+1,columnTypeStr.lastIndexOf(")"));
            return Integer.parseInt(length);
        }catch (Exception e) {
            return 0;
        }
    }





    /**
     * 列名转换成Java属性名
     */
    public static String columnToJava(String columnName) {
        return WordUtils.capitalizeFully(columnName, new char[]{'_'}).replace("_", "");
    }

    /**
     * 表名转换成Java类名
     */
    public static String tableToJava(String tableName, String tablePrefix) {
        if (StringUtils.isNotBlank(tablePrefix)) {
            tableName = tableName.replace(tablePrefix, "");
        }
        return columnToJava(tableName);
    }

    public static String tableToJava(String tableName, String tablePrefixs[]) {
        if (tablePrefixs != null && tablePrefixs.length > 0) {
            for (String tablePrefix : tablePrefixs) {
                tableName = tableName.replace(tablePrefix, "");
            }
        }
        return columnToJava(tableName);
    }




}
